package bag;
//异常处理
//异常  LBYL 操作之前做充分检查  EAEP 先操作遇到问题再处理
public class Question {
    public static void main(String[] args)throws ArrayIndexOutOfBoundsException {//声明可能会出现的异常
        // 在方法中可以让其他人 知道这里可能有异常 就是双重保险
        int[] array = {1,2,5};
        try {
            System.out.println(array[5]);//抛出异常之后 try里面的就不会在执行了
        }catch (ArrayIndexOutOfBoundsException e){//可以写多个catch也可以在catch括号内写多个异常类用|隔开
            //catch在捕获异常的时候从上往下最好是子类>父类  不要先写父类异常  否则会出错
            e.printStackTrace();//打印异常类型
            System.out.println("数组越界异常");
        }//如果不处理异常  异常会交给jvm  程序会马上终止
        finally {//作为资源的回收   尽量避免在finally中return
            System.out.println("fially执行了");//一定会执行  不论try catch里面异常有没有铺捉到都会执行
        }
        System.out.println("jja");//抛出异常之后可以正常执行\
        try{
            func(0);
        }catch (ArithmeticException e){
            e.printStackTrace();
        }

    }

    public static void func(int x)throws ArithmeticException{
        if(x == 0){
            //System.out.println(10 / x);
            throw new ArithmeticException("/ by zero");//自定义异常  自抛出异常   这个异常不是自定义的是系统就有的
        }
    }
}
